home *** CD-ROM | disk | FTP | other *** search
/ SGI ProDev Workshop 2.6.5 / SGI ProDev Workshop 2.6.5.iso / relnotes / WorkShop / ch3.z / ch3
Text File  |  1997-09-05  |  38KB  |  925 lines

  1.  
  2.  
  3.  
  4.                                   - 1 -
  5.  
  6.  
  7.  
  8.        3.  _C_h_a_n_g_e_s__a_n_d__A_d_d_i_t_i_o_n_s
  9.  
  10.        These are the changes from WorkShop 2.6.4:
  11.  
  12.           +o Compiler based "new" expression evaluator for n32 C++.
  13.             This gives calls to virtual functions, member
  14.             references without needing "this->" and other C++
  15.             features.
  16.  
  17.           +o Support for -n32 "-gslim" compilations, which reduce
  18.             the size of the symbolic debug information for C++
  19.             programs.
  20.  
  21.           +o F90 expression evaluation improvements.
  22.  
  23.           +o Irix 6.5 pthreads support.
  24.  
  25.        3.1  _N_e_w__F_e_a_t_u_r_e_s__i_n__T_h_i_s__R_e_l_e_a_s_e
  26.  
  27.           +o WorkShop now supports the debugging of applications
  28.             that use pthreads.  The changes are the addition of the
  29.             "showthread" command and the addition of an optional
  30.             "thread" argument to the "where" command.
  31.  
  32.             In order to debug pthreads programs, WorkShop's default
  33.             breakpoint behavior should be set in one of the
  34.             following two ways.   The first is to set the "adaMode"
  35.             resource in your .Xdefaults file. This can be done with
  36.             the following line:
  37.  
  38.               *adaMode:       True
  39.  
  40.             This sets the source view mode to control all running
  41.             processes in the share group and sets the Group Trap
  42.             and Stop All toggles in the Traps pulldown.
  43.  
  44.             The second way to change the breakpoint behavior is to
  45.             do the following:  First, use the rightmouse over the
  46.             Run, Continue or Stop buttons (whichever is active) to
  47.             invoke the Process Control Mode popup and make the "All
  48.             Processes" selection. Next, invoke the Traps pulldown
  49.             and set the Group Trap default and the Stop All trap
  50.             default.
  51.  
  52.             The showthread command provides status information
  53.             about the threads in your program. In one session, you
  54.             cannot debug more than one program that uses threads.
  55.  
  56.             The syntax of the "showthread" command is:
  57.  
  58.               showthread [full]
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.                                   - 2 -
  71.  
  72.  
  73.  
  74.               showthread [full] [thread] {number | all}
  75.  
  76.             The first form prints brief status information about
  77.             the current thread. If the full qualifier is included,
  78.             prints full status information.
  79.  
  80.             The second form prints brief status information about
  81.             the thread identified by number or all threads
  82.             associated with the debug session. If the full
  83.             qualifier is included, prints full status information.
  84.             The thread qualifier does not affect the output.
  85.  
  86.             The "where" command has been extended so that thread
  87.             callstacks can be printed:
  88.  
  89.               where [thread thread-id]
  90.  
  91.             A thread's id is obtained from the first column of the
  92.             output of the "showthread" command.
  93.  
  94.           +o WorkShop now provides a form of breakpoint that fires
  95.             when a C++ exception is raised.  The "stop exception"
  96.             command is used to set such a breakpoint.
  97.  
  98.             You can add a conditional expression to an exception
  99.             breakpoint by using the trap manager window. However,
  100.             the context in which the expression is evaluated is not
  101.             that of the throw; the context is the exception
  102.             handling code of the C++ runtime library. Hence, only
  103.             global variables have unambiguous interpretation in the
  104.             if clause.
  105.  
  106.             The syntax for setting an exception breakpoint is:
  107.  
  108.               stop exception {all | item}
  109.  
  110.               stop exception unexpected {[all] | [item [, item] ]}
  111.  
  112.             The first form stops on all C++ exceptions, or
  113.             exceptions that throw the base type item.
  114.  
  115.             The second form stops on all C++ exceptions that have
  116.             either no handler or are caught by an "unexpected"
  117.             handler.  If you specify item, stops on exceptions that
  118.             throw the base type item.
  119.  
  120.             Do not include complex expressions involving operators
  121.             such as * and & in your type specification for an
  122.             exception breakpoint. Note, however, that if you create
  123.             an exception breakpoint with a specific base type, you
  124.             will also stop your program on throws of pointer,
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.                                   - 3 -
  137.  
  138.  
  139.  
  140.             reference, const and volatile types. For example:
  141.  
  142.               (cvd) stop exception char
  143.  
  144.             Your program will stop on throws of type char, char *,
  145.             char&, const char&, volatile char*, and so forth.
  146.  
  147.        3.2  _F_e_a_t_u_r_e_s__a_d_d_e_d__i_n__P_r_i_o_r__R_e_l_e_a_s_e_s
  148.  
  149.        In WorkShop 2.6, the Static Analyzer can analyze Fortran 90
  150.        source code in its accurate parser mode.  Fortran 90 sources
  151.        can also be analyzed in the Static Anayzer's less-accurate
  152.        scanner mode.
  153.  
  154.        RRRReeeeqqqquuuuiiiirrrreeeemmmmeeeennnnttttssss: to use the Static Analyzer on Fortran 90, you
  155.        must have the Fortran 90 compiler installed.
  156.  
  157.        3.2.1  _C_h_a_n_g_e_s__i_n__t_h_e__I_n_t_e_r_f_a_c_e
  158.  
  159.           +o The "Host" text field has been removed.
  160.  
  161.           +o The "Data" menu has been removed and replaced with the
  162.             pop-up expression evaluator.  Pop-up expression
  163.             evaluation is activated by right-clicking in the source
  164.             area in MainView and selecting either "Click to
  165.             Evaluate" or "Auto Evaluate" in the pop-up menu.
  166.             "Click to Evaluate" means that when the process is
  167.             stopped, if you left-click on a symbol the current
  168.             value of that symbol will be displayed in a small pop-
  169.             up window near the source.  "Auto Evaluate" means that
  170.             you don't have to click on a symbol to see its value,
  171.             simply move the mouse over the symbol and hesitate; the
  172.             value will appear as though the mouse had been clicked.
  173.             Selecting an expression in either mode will cause it to
  174.             be evaluated.  You can get rid of the pop-up value by
  175.             moving the mouse out of the source area or by touching
  176.             the pop-up value with the mouse cursor.
  177.  
  178.           +o The "Performance Panel" under the "Admin" menu has been
  179.             removed and replaced with the "Perf" menu on the top-
  180.             level menubar.  There are three entries under this
  181.             menu: "Select Task" allows you to specify what
  182.             performance data to gather, "Examine Results" allows
  183.             you to launch the Performance Analyzer, and "Configs"
  184.             brings up the configuration dialog specifying control
  185.             information that you typically shouldn't have to
  186.             change.  The option menu just above the "Run" button
  187.             tells you when you are in debug, performance, or purify
  188.             mode and allows you to turn those modes on and off.
  189.             (Purify mode is only available if Purify from Pure
  190.             Software is installed on your system.)
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.                                   - 4 -
  203.  
  204.  
  205.  
  206.           +o When a performance experiment is finished, cvperf is
  207.             normally started immediately.  This feature may be
  208.             disabled using a toggle in the "Configs..." dialog.
  209.  
  210.           +o When recording performance experiments, a new option
  211.             allows you to follow _f_o_r_k'd processes or not; by
  212.             default, experiments will follow.
  213.  
  214.           +o The source view in the debugger will be shared with a
  215.             Performance Analyzer, and performance annotations will
  216.             appear in it.  Similarly, it will be shared with
  217.             WorkShop Pro MPF, and loop annotations will appear.
  218.  
  219.        3.2.2  _G_e_n_e_r_a_l__C_h_a_n_g_e_s__s_i_n_c_e__2_._4  WorkShop now supports
  220.        debugging and analyzing 64-bit executables built using
  221.        either the MIPS3 or MIPS4 ABI (application binary interface)
  222.        protocols (that is, programs that were built with the -mips3
  223.        or -mips4 flags) in addition to 32-bit executables. The
  224.        ability to support 64-bit executables has three general
  225.        consequences:
  226.  
  227.           +o Any WorkShop view that can display addresses (pointers)
  228.             can display the 64-bit addresses.
  229.  
  230.           +o Any WorkShop view that can display registers shows the
  231.             new configurations of registers and precisions
  232.             available in MIPS3 and MIPS4.  The details are
  233.             discussed in the WorkShop Debugger changes section.
  234.  
  235.           +o Any WorkShop view that displays disassembled source
  236.             code displays the 64-bit instruction set as well as the
  237.             64-bit addresses.
  238.  
  239.           +o WorkShop user authentication has been changed to
  240.             conform to the .rhosts-based model used by rcp and rsh.
  241.             This could break some remote debugging scenarios.  See
  242.             the _c_v_c_o_n_n_e_c_t(1m) and _r_h_o_s_t_s(4) man pages for further
  243.             details.
  244.  
  245.           +o The _W_o_r_k_S_h_o_p _O_v_e_r_v_i_e_w book was added.  This purpose of
  246.             this book is to provide a comprehensive overview of the
  247.             WorkShop features and to provide pointers of where to
  248.             look in the manuals for help.
  249.  
  250.  
  251.        3.3  _C_h_a_n_g_e_s__i_n__t_h_e__D_e_b_u_g_g_e_r
  252.  
  253.           +o Signals are trapped differently by recent versions of
  254.             _c_v_d (versions 2.4 and later) than by earlier versions.
  255.             If a signal is received that may lead to termination of
  256.             the process, earlier versions of _c_v_d would always trap
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.                                   - 5 -
  269.  
  270.  
  271.  
  272.             the signal.  (See _s_i_g_n_a_l(5) for the list of signals
  273.             that may lead to process termination).
  274.  
  275.             In newer versions of WorkShop, _c_v_d's default behavior
  276.             is to trap such a signal only if the process has not
  277.             registered a handler for the signal.  For example, if
  278.             the action on SIGSEGV is SIG_DFL and the process
  279.             receives a SIGSEGV, _c_v_d will stop the process.  On the
  280.             other hand, if the action on SIGSEGV is a handler
  281.             function and the process receives a SIGSEGV, _c_v_d will
  282.             not stop the process and SIGSEGV will be delivered to
  283.             the process.
  284.  
  285.             _c_v_d's default treatment of such signals can be
  286.             overridden.  The user can choose for a trap on a signal
  287.             either to stop the process whenever the signal is
  288.             received, or to stop the process only when there is no
  289.             handler registered for the signal.  The command _c_a_t_c_h
  290.             <_s_i_g_n_a_l> will cause _c_v_d to always stop the process when
  291.             <signal> is received.  The command _c_a_t_c_h _u_n_h_a_n_d_l_e_d
  292.             <_s_i_g_n_a_l> will cause _c_v_d to stop the process when
  293.             <signal> is received only if there is no handler
  294.             registered for <signal>.  The command _c_a_t_c_h will show
  295.             which signals are being trapped by _c_v_d; the signals
  296.             that are only trapped when there is no registered
  297.             handler are displayed as <signal> (when unhandled).
  298.  
  299.             Those users who prefer to have _c_v_d unconditionally trap
  300.             signals that may cause process termination may create a
  301.             ._c_v_d_r_c file in the their home directory and include the
  302.             following lines.  This will cause versions 2.4 and
  303.             later of _c_v_d to behave just as earlier versions with
  304.             regard to the default trapping of signals.
  305.  
  306.               catch SIGINT
  307.               catch SIGQUIT
  308.               catch SIGILL
  309.               catch SIGTRAP
  310.               catch SIGABRT
  311.               catch SIGEMT
  312.               catch SIGFPE
  313.               catch SIGBUS
  314.               catch SIGSEGV
  315.               catch SIGSYS
  316.               catch SIGPIPE
  317.               catch SIGALRM
  318.               catch SIGTERM
  319.               catch SIGUSR1
  320.               catch SIGUSR2
  321.               catch SIGPOLL
  322.               catch SIGVTALRM
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.                                   - 6 -
  335.  
  336.  
  337.  
  338.               catch SIGPROF
  339.               catch SIGXCPU
  340.               catch SIGXFSZ
  341.  
  342.           +o The debugger's "Remap Paths" feature can now be used to
  343.             map in source files whose name conflicts with a file in
  344.             the current working directory.  As a result of this
  345.             change, if you have sources compiled "-g" in other
  346.             directories, and similarly-named sources in ".", you
  347.             will not get the "." ones automatically.  This is a
  348.             change from prior versions of WorkShop, where the
  349.             sources in "." were used unconditionally.  To force the
  350.             debugger to use the sources in "." in these
  351.             circumstances, use Path Remapping to remap the path
  352.             named in the "File not in executable" dialog to "."
  353.  
  354.           +o The Debugger lets you switch back and forth between
  355.             sessions debugging 32-bit and 64-bit executables.
  356.  
  357.           +o In Main View, the PC address displays as a 64-bit
  358.             address for MIPS3 and MIPS4 executables. The PC address
  359.             appears in the _S_t_a_t_u_s field at the top of the window
  360.             and in the Debugger command line at the bottom of the
  361.             window.
  362.  
  363.           +o The _R_e_s_u_l_t column in Expression View displays 64-bit
  364.             addresses for MIPS3 and MIPS4 executables when you
  365.             select the "Address Of" menu item in the Format menu.
  366.  
  367.           +o The _R_e_s_u_l_t column in Variable Browser displays 64-bit
  368.             addresses for MIPS3 and MIPS4 executables when you
  369.             select the "Address Of" menu item in the Format menu.
  370.  
  371.           +o The _A_d_d_r_e_s_s field and address column display in Memory
  372.             View displays 64-bit addresses for MIPS3 and MIPS4
  373.             executables.
  374.  
  375.           +o The source display area in Disassembly View now
  376.             displays the 64-bit instruction set and the 64-bit
  377.             addresses for MIPS3 and MIPS4. The address fields in
  378.             the "Address..." and "Function..." dialog boxes
  379.             accessed from the Disassemble menu can accommodate 64-
  380.             bit addresses for MIPS3 and MIPS4 executables.
  381.  
  382.           +o Register View has changed the most radically of any of
  383.             the Debugger views. Here's a comparison of Register
  384.             View running a MIPS1 executable versus a MIPS4
  385.             executable:
  386.  
  387.                - Register View has 32 32-bit general purpose
  388.                  registers for MIPS1 executables and 32 64-bit
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.                                   - 7 -
  401.  
  402.  
  403.  
  404.                  general purpose registers for MIPS4.
  405.  
  406.                - Register View has five 32-bit special purpose
  407.                  registers for MIPS1. For MIPS4 executables, there
  408.                  are four 64-bit special registers and one 32-bit
  409.                  register (_f_p_s_c_r).
  410.  
  411.                - Register View has 16 32-bit floating point
  412.                  registers for MIPS1 executables and 32 32-bit
  413.                  floating point registers for MIPS4.
  414.  
  415.                - Register View has 16 64-bit double-precision
  416.                  registers for MIPS1 executables and 32 64-bit
  417.                  double-precision registers for MIPS4.
  418.  
  419.             The _p_r_i_n_t_r_e_g_s command on the Debugger command line will
  420.             print out the register values for the MIPS1 and MIPS4
  421.             ABIs as well.
  422.  
  423.           +o The following assignment operators for C expressions
  424.             are now supported in Expression View and the Expression
  425.             Evaluator dialog box:
  426.                     =    +=    -=    /=    %=    >>=    <<=    &=
  427.             ^=    |=
  428.  
  429.             0hese should be used with caution to avoid
  430.             inadvertently modifying a variable while stepping
  431.             through a program. the name of the .Counts file as an
  432.             argument.
  433.  
  434.        3.4  _C_h_a_n_g_e_s__i_n__P_e_r_f__T_o_o_l_s
  435.  
  436.           +o The performance tools now work on both 32- and 64-bit
  437.             non-shared executables with two exceptions:
  438.  
  439.                - You cannot perform malloc/free tracing on non-
  440.                  shared executables. The _l_i_b_e_x_c._a library is not
  441.                  available.
  442.  
  443.                - A new view, the Butterfly View, is available.  It
  444.                  is a textual alternative to the Callgraph View
  445.                  that shows the current selected node in the
  446.                  center, with scrolled lists of callers (parents)
  447.                  above it, and callees (children) below it.  It has
  448.                  the following features:
  449.  
  450.                     - Each entry in the list shows the same
  451.                       information shown in the main function list,
  452.                       along with an attribution percentage of
  453.                       whichever data item the main function list is
  454.                       sorted by.  For the selected function itself,
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.                                   - 8 -
  467.  
  468.  
  469.  
  470.                       the attribution percentage is the percentage
  471.                       of the function's Inclusive <whatever> that
  472.                       comes from the function's Exclusive
  473.                       <whatever>, and the attribution percentage of
  474.                       the children represent the percentage of the
  475.                       Inclusive <whatever> of the selected node
  476.                       that came from that child.  For the parents,
  477.                       the attribution percentage is that percentage
  478.                       of the selected function's inclusive
  479.                       <whatever> that is attributed to the
  480.                       particular parent function.  Note that for
  481.                       some sort orders, (e.g., address, alphabetic,
  482.                       calls, instruction counts, ...) there either
  483.                       is no corresponding data to propagate along
  484.                       the arcs, or we do not keep the data, because
  485.                       it takes too much memory; for those data
  486.                       types, the attribution percentages are all
  487.                       shown as "-".  Attribution percentages shown
  488.                       as "0. %" mean a true zero, while those shown
  489.                       as "0.0%" mean a value > 0, but < 0.1%.
  490.  
  491.                     - A single click on any line in the parent or
  492.                       child lists will select the node
  493.                       corresponding to that line, and refill the
  494.                       view with data based on the new selected
  495.                       function.  Similarly, a single click in the
  496.                       main function list, or any node in the graph
  497.                       will refill the Butterfly View.
  498.  
  499.                     - There are two controls on the "Config" menu
  500.                       of the butterfly view.  "Show Zero Arcs"
  501.                       determines whether or not zero-arcs, that is
  502.                       arcs that were never traversed, are shown.
  503.                       Zero arcs will have their attribution
  504.                       percentages shown as "0. %".  "Show All Arcs
  505.                       Individually" determines whether a single arc
  506.                       is shown between two nodes, with the data
  507.                       summed across all callsites from the parent
  508.                       to the child, or whether each individual arc
  509.                       (callsite) is shown.  If it is selected, the
  510.                       function name of each child has a PC value
  511.                       appended to it corresponding to the address
  512.                       of the individual call to that child function
  513.                       from the selected function; likewise, the
  514.                       parent name has the address of its call to
  515.                       the selected function appended.  (The PC
  516.                       address is shown rather than the line number
  517.                       because it is very expensive to look up the
  518.                       linenumber for each call site.  You can see
  519.                       which call site is which by invoking the
  520.                       source for the appropriate function.)
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.                                   - 9 -
  533.  
  534.  
  535.  
  536.                     - The source of the selected function can be
  537.                       invoked by the "Source" button just above the
  538.                       line for the selected function.  There is no
  539.                       control that directly allows invocation of
  540.                       source from a line in either the parent or
  541.                       the child list.
  542.  
  543.                - Performance experiments on executables that
  544.                  dynamically link many DSOs can be expensive,
  545.                  because we currently record a sample at every
  546.                  invocation of _d_l_o_p_e_n.  We believe it is preferable
  547.                  to not take a sample at all such calls, but have
  548.                  not tested it sufficiently to make it the default.
  549.                  To record experiments without such samples, you
  550.                  need to set:
  551.                       _c_v_m_o_n*_n_o_S_a_m_p_l_e_O_n_D_l_o_p_e_n to TRUE in your
  552.                       ._X_d_e_f_a_u_l_t_s file.
  553.  
  554.                - A new graph pushbutton, _S_h_o_w _I_m_p_o_r_t_a_n_t _P_a_r_e_n_t_s, is
  555.                  available.  It will show those callers of a given
  556.                  function where usage exceeds a threshold.
  557.  
  558.                - The Performance Analyzer now can show information
  559.                  about working sets for instructions for Ideal-time
  560.                  experiments.  The new Working Set View will show a
  561.                  list of the program and its DSOs in the program,
  562.                  and, for a selected DSO, show the page layout and
  563.                  utilization.
  564.  
  565.                - A new tool, _c_v_c_o_r_d, the Cord Analyzer is available
  566.                  for producing cord feedback files to optimize
  567.                  instruction working sets for programs.  It takes
  568.                  working set information from one or more
  569.                  experiments and/or different caliper settings, and
  570.                  computes an optimized layout to improve working
  571.                  set behavior.  Although the tool works on both 32-
  572.                  and 64-bit programs, at this time _c_o_r_d itself only
  573.                  works on 32-bit executables and DSOs.  See the
  574.                  _c_v_c_o_r_d man page for further information.
  575.  
  576.                - The Performance Analyzer can now obtain
  577.                  performance data equivalent to _p_i_x_i_e and _p_i_x_s_t_a_t_s.
  578.                  This lets you see metrics based on the time that
  579.                  instructions were available for processing but
  580.                  could not be completed for some reason, such as
  581.                  branch, function unit, or operand delays.
  582.  
  583.                  To capture _p_i_x_i_e data, you select the task "Get
  584.                  Ideal Time (pixie) per function & source line"
  585.                  from the Task menu in the Performance Panel. (This
  586.                  task was formerly called "Get Ideal Time per
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.                                   - 10 -
  599.  
  600.  
  601.  
  602.                  function & source line".) The new version of the
  603.                  task enables you to show the following types of
  604.                  performance data in your experiments:
  605.  
  606.                     - Inclusive percentage time - the percentage of
  607.                       time that instructions in this function (and
  608.                       any called functions) were available for
  609.                       processing but could not be processed.
  610.  
  611.                     - Exclusive percentage time - the percentage of
  612.                       time that instructions in this function
  613.                       (excluding any calls) were available for
  614.                       processing but could not be processed.
  615.  
  616.                     - Inclusive cycles - the number of elapsed
  617.                       cycles in this function, line of code, or
  618.                       instruction (including any calls).
  619.  
  620.                     - Exclusive cycles - the number of elapsed
  621.                       cycles in this function, line of code, or
  622.                       instruction (excluding any calls).
  623.  
  624.                     - Instruction coverage - the percentage of the
  625.                       instructions within each function that were
  626.                       actually executed. In the disassembled
  627.                       source, branch-taken counts are displayed.
  628.                       Branch-taken counts show the number of times
  629.                       that each conditional branch was taken.
  630.  
  631.                     - Pixstats/Cycles-per instruction - the ratio
  632.                       of cycles to instructions. In a classic RISC
  633.                       machine, the Pixstats/Cycles-per instruction
  634.                       ratio would be 1.0. If the ratio is much
  635.                       greater than 1.0, you should check the
  636.                       disassembled source to determine the reasons
  637.                       for this inefficiency.  Clicking the
  638.                       Disassembled Source button in the Performance
  639.                       Analyzer displays the disassembled code in a
  640.                       Source View window with a special three-part
  641.                       annotation. A yellow bar spanning the top of
  642.                       three columns in this annotation indicates
  643.                       the first instruction in each basic block.
  644.                       The first column labelled _C_l_o_c_k in the
  645.                       annotation displays the clock number in which
  646.                       the instruction issues relative to the start
  647.                       of a basic block. If you see clock numbers
  648.                       replaced by ditto marks ("), it means that
  649.                       multiple instructions were issued in the same
  650.                       cycle. The second column is labelled _S_t_a_l_l
  651.                       and shows how many clocks elapsed during the
  652.                       stall before the instruction was issued. The
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.                                   - 11 -
  665.  
  666.  
  667.  
  668.                       third column labelled _W_h_y shows the reason
  669.                       for the stall. There are three possibilities:
  670.  
  671.                          +o B - branch delay
  672.  
  673.                          +o F - function unit delay
  674.  
  675.                          +o O - operand hasn't arrived yet
  676.  
  677.                - The Performance Analyzer also provides a new view,
  678.                  Malloc Error View, that lets you focus on _m_a_l_l_o_c
  679.                  errors without having to sort through legitimate
  680.                  _m_a_l_l_o_c operations.  Malloc Error View is available
  681.                  when you perform the "Find Memory Leaks" task. It
  682.                  takes the same form as Malloc View--the difference
  683.                  is that where Malloc View displays all _m_a_l_l_o_c_s in
  684.                  its list area (the upper pane), Malloc Error View
  685.                  displays only _m_a_l_l_o_c_s or _f_r_e_e_s that caused errors,
  686.                  identifying the cause of the problem and how many
  687.                  times it occurred. Malloc Error View replaces some
  688.                  of the functionality of Heap View.
  689.  
  690.                  When you run a "Find Memory Leaks" experiment and
  691.                  the Performance Analyzer detects a _m_a_l_l_o_c error, a
  692.                  dialog box will display recommending that you use
  693.                  Malloc Error View to analyze the results.
  694.  
  695.                - The "Find Memory Leaks Task" task has four
  696.                  associated performance metrics available. The leak
  697.                  counts were previously on by default--the malloc
  698.                  counts are now turned on as well. The metrics are:
  699.  
  700.                     - Inclusive Bytes Leaked - the number of bytes
  701.                       leaked from this function (including any
  702.                       called functions). This metric can be turned
  703.                       on for arcs as well as functions.
  704.  
  705.                     - Exclusive Bytes Leaked - the number of bytes
  706.                       leaked from this function (excluding any
  707.                       called functions).
  708.  
  709.                     - Inclusive Bytes malloc'ed - the number of
  710.                       bytes _m_a_l_l_o_c'_e_d from this function (including
  711.                       any called functions). This metric can be
  712.                       turned on for arcs as well as functions.
  713.  
  714.                     - Exclusive Bytes malloc'ed - the number of
  715.                       bytes _m_a_l_l_o_c'_e_d from this function (excluding
  716.                       any called functions).
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.                                   - 12 -
  731.  
  732.  
  733.  
  734.                - There is a new task called "Get PC Sampling
  735.                  Times". It has no new functionality.  It simply
  736.                  lets you perform statistical profiling with fine
  737.                  grained usage sampling at 1-second intervals
  738.                  without capturing any other performance data.  It
  739.                  works on 32- and 64-bit processes and under IRIX
  740.                  6.2.
  741.  
  742.                - The "Determine bottlenecks, identify phases" task
  743.                  and the "Get Total Time per function & source
  744.                  line" task both capture Call Stack Profiling data
  745.                  every 100 msec. by default.
  746.  
  747.                - I/O tracing has been incorporated into Syscall
  748.                  Tracing. When you perform Syscall tracing
  749.                  experiments, you can now get _r_e_a_d and _w_r_i_t_e counts
  750.                  and can display I/O View.
  751.  
  752.                - If you prefer to sort by exclusive rather than
  753.                  inclusive data by default, you need to set
  754.                  _c_v_p_e_r_f*_e_m_p_h_a_s_i_z_e_E_x_c_l_u_s_i_v_e to TRUE in your
  755.                  ._X_d_e_f_a_u_l_t_s file.
  756.  
  757.                - The following environment variables are available
  758.                  for "Find Memory Leaks" experiments:
  759.  
  760.                     - _M_A_L_L_O_C__V_E_R_B_O_S_E
  761.  
  762.                     - _M_A_L_L_O_C__T_R_A_C_I_N_G
  763.  
  764.                     - _M_A_L_L_O_C__F_A_S_T_C_H_K
  765.  
  766.                     - _M_A_L_L_O_C__M_A_X_M_A_L_L_O_C
  767.  
  768.                     - _M_A_L_L_O_C__N_O__R_E_U_S_E
  769.  
  770.                     - _M_A_L_L_O_C__C_L_E_A_R__F_R_E_E
  771.  
  772.                     - _M_A_L_L_O_C__C_L_E_A_R__F_R_E_E__P_A_T_T_E_R_N
  773.  
  774.                     - _M_A_L_L_O_C__C_L_E_A_R__M_A_L_L_O_C
  775.  
  776.                     - _M_A_L_L_O_C__C_L_E_A_R__M_A_L_L_O_C__P_A_T_T_E_R_N
  777.  
  778.                       These are described in detail in the
  779.                       reference (man) page for _m_a_l_l_o_c__c_v.
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.                                   - 13 -
  797.  
  798.  
  799.  
  800.        3.5  _C_h_a_n_g_e_s__i_n__t_h_e__T_e_s_t_e_r
  801.  
  802.  
  803.  
  804.           +o _C_v_c_o_v now includes a command, _o_p_t_i_m_i_z_e, that will
  805.             analyze a set of tests and choose the minimum set of
  806.             tests that will either have the same coverage or meet
  807.             user's coverage criteria.
  808.  
  809.           +o Two options, ----ccccoooommmmpppprrrreeeessssssss and ----bbbbiiiittttccccoooouuuunnnntttt, have been added
  810.             in _c_v_c_o_v's _r_u_n_t_e_s_t command. Option ----ccccoooommmmpppprrrreeeessssssss saves
  811.             experiment database in compressed format while
  812.             ----bbbbiiiittttccccoooouuuunnnntttt transforms count file into 1-bit-per-count
  813.             format.
  814.  
  815.           +o An option, ----aaaaddddddddrrrr, has been added in _c_v_c_o_v's _l_s_b_l_o_c_k and
  816.             _l_s_b_r_a_n_c_h commands to show blocks and branches by PC
  817.             addresses instead of souce line numbers as default.
  818.  
  819.        3.6  _I_n_t_e_g_r_a_t_i_o_n__w_i_t_h__o_t_h_e_r__T_o_o_l_s
  820.  
  821.        WorkShop includes facilities for integrating with other
  822.        tools.  The WorkShop tools can be started from other
  823.        WorkShop tools by using the "Launch Tool" sub-menu under the
  824.        "Admin" menu.  You can add entries to the "Launch Tool" menu
  825.        by adding lines to the file
  826.        /_u_s_r/_l_i_b/_C_a_s_e_V_i_s_i_o_n/_s_y_s_t_e_m._l_a_u_n_c_h.  The format of the
  827.        entries in this file is the menu entry, followed by a comma,
  828.        followed by the command line that should be run to start the
  829.        tool.
  830.  
  831.        3.7  _I_n_t_e_g_r_a_t_i_o_n__w_i_t_h__C_a_d_r_e__t_e_a_m_wwww_oooo_rrrr_kkkk
  832.  
  833.        The WorkShop "Launch Tool" menus can be combined with
  834.        team_w_o_r_k's User Menus to provide a tight coupling between
  835.        the WorkShop tools and Cadre team_w_o_r_k tools.
  836.  
  837.        3.7.1  _S_t_a_r_t_i_n_g__t_e_a_m_wwww_oooo_rrrr_kkkk__f_r_o_m__W_o_r_k_S_h_o_p  Adding the following
  838.        line to the file /_u_s_r/_l_i_b/_C_a_s_e_V_i_s_i_o_n/_s_y_s_t_e_m._l_a_u_n_c_h
  839.  
  840.        TTTTeeeeaaaammmmwwwwoooorrrrkkkk,,,, ////ccccaaaaddddrrrreeee////ttttssssaaaa////ccccoooommmm////tttteeeeaaaammmmwwwwoooorrrrkkkk
  841.  
  842.        will provide an entry labeled "Teamwork" in the "Launch
  843.        Tool" sub-menu of the "Admin" menu of the WorkShop tools.
  844.        Selecting this menu entry will start up team_w_o_r_k.
  845.  
  846.        3.7.2  _S_t_a_r_t_i_n_g__W_o_r_k_S_h_o_p__t_o_o_l_s__f_r_o_m__t_e_a_m_wwww_oooo_rrrr_kkkk  Here is a
  847.        sample team_w_o_r_k User Menu file for the WorkShop tools:
  848.  
  849.  
  850.        #### WWWWoooorrrrkkkkSSSShhhhoooopppp UUUUsssseeeerrrr MMMMeeeennnnuuuu DDDDeeeeffffiiiinnnniiiittttiiiioooonnnnssss
  851.  
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.                                   - 14 -
  863.  
  864.  
  865.  
  866.        ((((MMMMeeeennnnuuuu
  867.            ((((NNNNaaaammmmeeee """"WWWWoooorrrrkkkkSSSShhhhoooopppp""""))))
  868.            ((((MMMMeeeennnnuuuuIIIItttteeeemmmm
  869.                ((((NNNNaaaammmmeeee """"DDDDeeeebbbbuuuuggggggggeeeerrrr""""))))
  870.                ((((AAAAccccttttiiiioooonnnn ((((SSSSyyyyssssCCCCaaaallllllll """"////uuuussssrrrr////ssssbbbbiiiinnnn////ccccvvvvdddd""""))))))))
  871.            ))))
  872.            ((((MMMMeeeennnnuuuuIIIItttteeeemmmm
  873.                ((((NNNNaaaammmmeeee """"BBBBuuuuiiiilllldddd AAAAnnnnaaaallllyyyyzzzzeeeerrrr""""))))
  874.                ((((AAAAccccttttiiiioooonnnn ((((SSSSyyyyssssCCCCaaaallllllll """"////uuuussssrrrr////ssssbbbbiiiinnnn////ccccvvvvbbbbuuuuiiiilllldddd""""))))))))
  875.            ))))
  876.            ((((MMMMeeeennnnuuuuIIIItttteeeemmmm
  877.                ((((NNNNaaaammmmeeee """"PPPPaaaarrrraaaalllllllleeeellll AAAAnnnnaaaallllyyyyzzzzeeeerrrr""""))))
  878.                ((((AAAAccccttttiiiioooonnnn ((((SSSSyyyyssssCCCCaaaallllllll """"////uuuussssrrrr////ssssbbbbiiiinnnn////ccccvvvvppppaaaavvvv""""))))))))
  879.            ))))
  880.            ((((MMMMeeeennnnuuuuIIIItttteeeemmmm
  881.                ((((NNNNaaaammmmeeee """"PPPPeeeerrrrffffoooorrrrmmmmaaaannnncccceeee AAAAnnnnaaaallllyyyyzzzzeeeerrrr""""))))
  882.                ((((AAAAccccttttiiiioooonnnn ((((SSSSyyyyssssCCCCaaaallllllll """"////uuuussssrrrr////ssssbbbbiiiinnnn////ccccvvvvppppeeeerrrrffff""""))))))))
  883.            ))))
  884.            ((((MMMMeeeennnnuuuuIIIItttteeeemmmm
  885.                ((((NNNNaaaammmmeeee """"SSSSttttaaaattttiiiicccc AAAAnnnnaaaallllyyyyzzzzeeeerrrr""""))))
  886.                ((((AAAAccccttttiiiioooonnnn ((((SSSSyyyyssssCCCCaaaallllllll """"////uuuussssrrrr////ssssbbbbiiiinnnn////ccccvvvvssssttttaaaattttiiiicccc""""))))))))
  887.            ))))
  888.        ))))
  889.  
  890.        By including these definitions in a user menu file, you will
  891.        be able to start up any of the WorkShop tools directly from
  892.        the team_w_o_r_k tools.
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.  
  900.  
  901.  
  902.  
  903.  
  904.  
  905.  
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.